#!/usr/bin/env python

__author__ = 'Emiliano Dalla Verde Marcozzi'
__version__ = '0.1'
__copyright__ = 'Licencia GPL v2'

from monitors import *
from config import *

# llamamos a otros modulos que tienen metodos copados
# para hacer cosas
from system import systemtool
from alerts import alertstool
from process import processtool

class monitortool:
    """ Class doc here ...
    """
    
    def __init__(self):
        self.st = systemtool()
        self.pt = processtool()
        self.al = alertstool()

    # primer monitor, usa una tool en el __init__, la st, de systemtool()
    # y hace algo, en este caso chequea load average
    def LoadAvg(self):
        """ send alert if loadavg is > from MAX_LOAD_AVG
        """
        
        loadavg = map(float, self.st.loadaverage().split(',')[:])
        # toma el maximo load que seteas e nconfig.py
        max_loadavg = map(float, MAX_LOAD_AVG.split(',')[:])
        message = ''
        # tito, esto va abajo, sino jode todo 
        # XXX: x-ip fix!
        #message = 'Host: %s ' % self.st.nodename()
        # como son strings, lo mapea todo a float y compara, armando el mensaje
        if loadavg[0] > max_loadavg[0]:
            message = message + ('Last minute load:. %s load is more than %s'  \
                                                % (loadavg[0], max_loadavg[0]))

        elif loadavg[1] > max_loadavg[1]:
            message = message + (' Last 5 minutes:. %s load is more than %s'   \
                                                % (loadavg[1], max_loadavg[1]))
            
        elif loadavg[2] > max_loadavg[2]:
            message = message + (' Last 15 minutes:. %s load is more than %s'  \
                                                % (loadavg[2], max_loadavg[2]))
            #si el string message no esta vacio, significa que algo se cago
            # tonces manda alerta por irc, usando otra tool, la al de ALerts
            # que esta en alerts.py
            #es que comentaste la linea que pone message = .
            #como mi load es bajo jamas le asigna nada
            #so, la variable no existe ... iep
        if message is not '':
            self.al.Irc(message)
            

# a esta clase la instancian, bleh, cuando ejecutas sxnet como se llame ...
class monitormanager:
    """ Class doc here ...
    """
    def __init__(self):
        self.mt = monitortool()
        
    def activatemonitors(self):
        """ Run monitors
        """
        self.mt.LoadAvg()#aca se va para arriba


def run():
    mm = monitormanager()
    mm.activatemonitors()
